#include <iostream>

#include "conjunto_de_descriptores.h"
#include "cargador_alumnos.h"
#include "generador_de_relaciones.h"
#include "impresor_de_resultados.h"

using namespace std;

int main(int argc, char *argv[]){

	if(argc != 2){
		cerr << "Modo de empleo: " << argv[0] << " ARCHIVO" << endl;
		return 1;
	}

	try{
		CargadorAlumnos cargador(argv[1]);

		ConjuntoDeDescriptores descriptoresAEvaluar;
		descriptoresAEvaluar.agregarDescriptor(ES_HOMBRE);
		descriptoresAEvaluar.agregarDescriptor(TRABAJA);
		descriptoresAEvaluar.agregarDescriptor(ESTUDIA_SEIS_HORAS_SEMANALES);
		descriptoresAEvaluar.agregarDescriptor(MAYOR_DE_VEINTICUATRO);

		cerr << "llegue" << endl;

		GeneradorDeRelaciones generador;
		Resultado relaciones = generador.generarRelaciones(
				cargador.getListaAlumnos(), PROMEDIO_MAYOR_A_CUATRO,
				descriptoresAEvaluar);

		cerr << "llegue2" << endl;

		ImpresorDeResultados impresor;
		impresor.imprimirResultado(relaciones);

		cerr << "llegue3" << endl;


		//Limpieza
		IteradorLista<Alumno*> iteradorAlumnos = cargador.getListaAlumnos()->iterador();
		while(iteradorAlumnos.tieneSiguiente()){
			delete iteradorAlumnos.siguiente();
		}

		delete cargador.getListaAlumnos();

		cerr << "llegue4" << endl;

	}catch(std::ios_base::failure){
		cerr << "El archivo " << argv[1] << " no existe." << endl;

		return 1;
	}

	cout << "termino" << endl;

	return 0;
}
